---
title: FaxService
summary: Contract detail for FaxService, hosted at the `Fax` route.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-09-22
---

# FaxService

`FaxService` implements the external `IFaxService` contract and is activated over the `Fax` route. This page documents every public operation the class exposes.

| Field | Value |
| --- | --- |
| **Service class** | `SAIF.Services.WCF.Services.FaxService` |
| **Declared contract** | `IFaxService` — external (`SAIF.Services.WCF.Contracts`, arriving transitively via `SAIF.Framework.Core`) * |
| **Route** | `Fax` |
| **Source** | `src/WCF/SAIF.Services.WCF.Host/Services/FaxService.cs` |
| **Service attributes** | `[AspNetCompatibilityRequirements(RequirementsMode = Allowed)]`, `[LogErrorBehavior]` |
| **Instancing / concurrency** | WCF defaults — not overridden in source |
| **Binding** | `basicHttpBinding` (default, unnamed — no `<endpoint>` is configured for any of the six routes) |
| **Class-level authorization** | None in code |
| **Error handling** | `[LogErrorBehavior]` installs `ErrorLogErrorHandler`; see [Faults and error pipeline](../faults.md) |
| **Operations** | 1 |
| **Also hosted in** | — |

---

## SendFax

Stage a document and dispatch it to each fax recipient.

| Field | Value |
| --- | --- |
| **Operation name** | `SendFax` |
| **Contract name** | `SendFax` — override, if any, not observable because `IFaxService` is declared in an external contracts assembly |
| **SOAP action** | Not observable — contract assembly is external |
| **Implementing member** | `SAIF.Services.WCF.Services.FaxService.SendFax` (`src/WCF/SAIF.Services.WCF.Host/Services/FaxService.cs`) |
| **Pattern** | Request/response (`IsOneWay` not observable — contract assembly is external) |
| **Binding** | `basicHttpBinding` (default, unnamed) |
| **Authorization** | [None in code](../authentication-authorization.md#authorization-enforcement) |
| **Process** | [OP-014](../operations/fax-sendfax.md) |

### Input message

| Part | Type | Required | Default | Purpose |
| --- | --- | --- | --- | --- |
| `config` | `SAIF.Core.Services.Documents.FaxConfig` | Yes | — | Fax request carrying the document bytes and the recipient collection. |

#### Complex input types

| Type | Kind | Members | Declared in |
| --- | --- | --- | --- |
| `SAIF.Core.Services.Documents.FaxConfig` | Data contract | Not enumerated — declared in an external contracts assembly ** | `SAIF.Services.WCF.Contracts` / framework closure * |

### Output message

| Field | Value |
| --- | --- |
| **Return type** | void |
| **Meaning** | A successful response indicates only that the operation completed without a fault. |
| **Empty-result behavior** | Not applicable. |

### Faults

| Fault | Declared | Raised when | Surfaced as | Detail crosses the boundary |
| --- | --- | --- | --- | --- |
| `ArgumentNullException` | Not declared | See [OP-014 process detail](../operations/fax-sendfax.md) | Generic SOAP fault produced by The operation itself, via `Enforce` | Yes |
| `FaultException`/`CommunicationException`/`TimeoutException` from Legacy.Fax | Not declared | See [OP-014 process detail](../operations/fax-sendfax.md) | Generic SOAP fault produced by The `ErrorLogErrorHandler` installed by `[LogErrorBehavior]` | Yes |
| Filesystem exception staging or removing the temp file | Not declared | See [OP-014 process detail](../operations/fax-sendfax.md) | Generic SOAP fault produced by The `ErrorLogErrorHandler` installed by `[LogErrorBehavior]` | Yes |

<!-- No `[FaultContract]` is declared on any operation in this host — see Faults and error pipeline. -->

### Authorization

None in code. Access to `SendFax` rests entirely on the IIS authentication configured for the deployment variant; see [Authentication and authorization](../authentication-authorization.md#authorization-enforcement).

### Side effects

| Aspect | Finding |
| --- | --- |
| Records written | None |
| Downstream calls | Legacy.Fax SOAP service (one call per recipient) — see [Dependencies](../dependencies.md) |
| Files or messages produced | Writes then deletes a temporary document file; dispatches one downstream SOAP call per recipient |
| Shared state touched | None |
| Repeat-call behavior | Each call restages and redispatches the fax; not idempotent, and a duplicate call resends to every recipient |


---

## Coverage checklist

| Public member | Documented section | Pattern |
| --- | --- | --- |
| `void SendFax(SAIF.Core.Services.Documents.FaxConfig config)` | [`SendFax`](#sendfax) | Request/response |

## Related documentation
- [Index](../index.md)
- [Overview](../overview.md)
- [Architecture](../architecture.md)
- [Activation and hosting](../activation-hosting.md)
- [Operations](../operations.md)
- [Faults and error pipeline](../faults.md)
- [Authentication and authorization](../authentication-authorization.md)
- [Dependencies](../dependencies.md)
- [Configuration](../configuration.md)
- [Operations and processes](../operations-processes.md)
- [Business rules](../business-rules.md)
- [Data model](../data-model.md)
- [Operational runbook](../operational-runbook.md)
- [Tech debt](../tech-debt.md)

> **Note:** Statements marked with `*` were inferred from code structure, naming
> conventions, or contextual evidence where direct confirmation was not available
> in source artifacts. Statements marked with `**` could not be confirmed; treat
> as unknown until verified.

## Sources
- src/WCF/SAIF.Services.WCF.Host/Services/FaxService.cs
